# Instalación de Slackware 15.0 en la Orange Pi PC

Guía de instalación de Slackware 15.0 en la Orange Pi PC.

## Material requerido

* Orange Pi PC (H3) v1.2.
* Fuente de alimentación para la Orange Pi PC.
* Almacenamiento externo para el sistema operativo (HDD USB, SSD USB, M.2 USB, etc.).
* Módulo USB PL2303 Puerto Serial.
* Cables Dupont hembra a hembra.
* Tarjeta Micro SD para el gestor de arranque (U-Boot).
* (Opcional) Adaptador USB Micro SD.

## Preparar Slackware ARM

Descargar Slackware ARM:

    sudo mkdir /export
    cd /export
    sudo rsync \
      --exclude '*/source/*' \
      --delete -Prlvv \
      ftp.arm.slackware.com::slackwarearm/slackwarearm-15.0 .

Montar un servidor HTTP como fuente para los paquetes de Slackware ARM:

    cd /export/slackwarearm-15.0
    python -m SimpleHTTPServer

Permitir conexiones entrantes para el servidor HTTP desde el firewall:

    sudo ufw allow 8000/tcp

Agregar el servicio de TFTP en el archivo de configuración de initd en `/etc/inetd.conf`:

    tftp  dgram   udp     wait    root    /usr/sbin/in.tftpd  in.tftpd -s /tftpboot -r blksize

Habilitar y ejecutar el init script de `inetd` para montar el servidor TFTP como fuente del instalador de Slackware ARM:

    sudo chmod 755 /etc/rc.d/rc.inetd
    sudo /etc/rc.d/rc.inetd restart

Permitir conexiones entrantes para el servidor TFTP desde el firewall:

    sudo ufw allow 69/udp

Consultar la dirección IP del ordenador:

    ip addr

Copiar el instalador de Slackware ARM, el instalador de U-Boot, el kernel Linux, los archivos DTB (Device Tree Blob) y el disco de RAM inicial:

    sudo mkdir -vpm755 /tftpboot/slackwarearm-15.0
    cd /export/slackwarearm-15.0/
    sudo cp -fav \
      isolinux/initrd-armv7.img \
      isolinux/u-boot_tftp \
      kernels/armv7/{zImage*,dtb} \
      kernels/armv7/initrd* \
      /tftpboot/slackwarearm-15.0/

Descargar el gestor de arranque U-Boot para la Orange Pi PC:

    cd /tmp
    wget http://ftp.arm.slackware.com/slackwarearm/platform/arm/bootware/bin/orangepi_pc.sdcard_latest.img.xz

Insertar la tarjeta Micro SD en el ordenador e identificar su nombre:

    lsblk

Formatear la tarjeta Micro SD y crear una partición de tipo dos (por ejemplo: `/dev/sdb`):

    sudo gdisk /dev/sdb
      Enter 'x' to enable the entended options.
      Enter 'z' to zap (wipe out) the existing GPT.
      Answer 'Y' to add questions.
    sudo cfdisk /dev/sdb
    sudo mkfs.ext4 -L U-BOOT /dev/sdb1

Instalar U-Boot en la tarjeta Micro SD:

    cd /tmp
    sudo xzcat orangepi_pc.sdcard_latest.img.xz > /dev/sdb

Insertar la tarjeta Micro SD en la Orange Pi PC.

## Conexión

Ingresar al prompt de U-Boot de la Orange Pi PC:

    sudo screen -T screen-256color /dev/ttyUSB0 115200,-crtscts

## Configuración

Restablecer U-Boot a su configuración predeterminada:

    env default -a

Configurar una dirección IP temporal:

    dhcp;dhcp;dhcp

Establecer la dirección IP del servidor TFTP (por ejemplo: `192.168.1.80`):

    setenv serverip 192.168.1.80

Establecer una configuración genérica de arranque:

    setenv fdt_addr 0x43000000
    setenv kernel_addr_r 0x47000000
    setenv ramdisk_addr_r 0x48000000
    setenv bootcmd_generic 'debug earlyprintk hdmi.audio=EDID:0'
    setenv slkconsole "console=ttyS0,115200n8 console=tty0 disp.screen0_output_mode=EDID:1280x720p50"
    setenv DTB sun8i-h3-orangepi-pc.dtb
    setenv netretry yes
    setenv tftptimeoutcountmax 1024

Guardar la configuración y reiniciar el dispositivo:

    saveenv; reset

> Presionar enter para detener el arranque automático del dispositivo e ingresar de nuevo al prompt de U-Boot.

## Instalación

Configurar de nuevo una dirección IP temporal:

    dhcp;dhcp;dhcp

Arrancar el instalador de Slackware ARM:

    tftp 0x52000000 slackwarearm-15.0/u-boot_tftp/orangepi-pc
    source 0x52000000

Crear una tabla de particiones de tipo gpt (por ejemplo: `/dev/sda`):

| Partición | Punto de montaje | Tamaño | Tipo             |
| --------- | ---------------- | ------ | ---------------- |
| /dev/sda1 | SWAP             | 2 GB   | Linux swap       |
| /dev/sda2 | /                | ----   | Linux filesystem |
| /dev/sda3 | /home            | ----   | Linux filesystem |

    gdisk /dev/sda
      Enter 'x' to enable the entended options.
      Enter 'z' to zap (wipe out) the existing GPT.
      Answer 'Y' to add questions.
    cfdisk /dev/sda

Iniciar la guía de instalación de Slackware ARM:

    setup

Seleccionar la fuente de los paquetes de Slackware ARM desde un servidor FTP/HTTP:

    Enter the URL......: http://192.168.1.80:8000
    Enter the directory: /slackware/

> Reiniciar la Orange Pi PC y presionar enter para ingresar al prompt de U-Boot

Establecer la ubicación de arranque del sistema operativo:

    setenv bootcmd_dtb 'ext4load usb 0:2 ${fdt_addr} /boot/dtb/${DTB}; fdt addr ${fdt_addr} 0x40000'
    setenv bootcmd_slk 'usb reset; run bootcmd_dtb; ext4load usb 0:2 ${kernel_addr_r} /boot/zImage-armv7; ext4load usb 0:2 ${ramdisk_addr_r} /boot/initrd-armv7'
    setenv bootargs "${slkconsole} ${bootcmd_generic} root=LABEL=SLKroot waitforroot=5 rootfstype=ext4"
    setenv bootcmd 'run bootcmd_slk; bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr}; reset'
    saveenv; reset

Copiar la configuración de X.Org si utiliza un entorno de escritorio o gestor de ventanas:

    cp -fa /usr/doc/xf86-video-fbturbo-*/xorg.conf-fbturbo-sample /etc/X11/xorg.conf.d

Eliminar las reglas del firewall del ordenador:

    sudo ufw delete allow 8000/tcp
    sudo ufw delete allow 69/udp

## Referencias

* [Slackware ARM - Sitio web oficial.](https://arm.slackware.com)
* [SlackDocs - Slackware ARM 32bit version 15.0: Installation Documentation.](https://docs.slackware.com/slackwarearm:inst_sa32_rel_15.0)
* [SlackDocs - Slackware ARM & AArch64 Installation Documentation.](https://docs.slackware.com/slackwarearm:inst)
* [Slackware ARM - Install Slackware ARM on Hardware Models using the AllWinner H3 SoC.](http://ftp.arm.slackware.com/slackwarearm/slackwarearm-15.0/installdocs/INSTALL_AllWinner_H3.TXT)
* [Orange Pi PC - Sitio web oficial.](http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-PC.html)
* [U-Boot - Environment Variables.](https://docs.u-boot.org/en/latest/usage/environment.html)
* [Slackware ARM - Orange Pi PC H3 (unofficial).](https://www.linuxquestions.org/questions/slackware-arm-108/orange-pi-pc-h3-unofficial-4175688993)
* [Unofficial slarm64 images for Orange Pi PC.](https://dl.slarm64.org/slackware/images/orange_pi_pc)
* [slarm64 linux unofficial slackware port for aarch64 / riscv64 architecture.](https://slarm64.org)
